An H.264 video coder/decoder (CODEC) contains, as part of a main or high profile, a context adaptive binary arithmetic-coding (CABAC) process. Arithmetic coding allows compression of multiple bins (binary information) into bits for transmission. A non-arithmetic coding form context adaptive variable length coding (CAVLC) is also supported.
The H.264 format profiles and levels constrain a maximum bit limit on a macroblock, picture, and transmission rate basis. Non-arithmetic CAVLC coding allows real-time hardware to be constructed, which will process a macroblock in a fixed maximum number of clock cycles per macroblock. For arithmetic CABAC coding however, due to the forced serial nature of CABAC combined with the possible 128:1 bin:bit expansion, guaranteed real time encoding or decoding on a macroblock basis is not feasible.
Limits on the number of bins are accounted for in the H.264 standard, but only on a picture basis. An entropy processor is built as a bit stream processor. The entropy processor will transcode, in real-time, between CABAC and CAVLC entropy coding of an H.264 bit stream. The entropy processor guarantee of real-time performance on a picture level can support multiplexed bi-directional transcoding.
Conventional approaches to CABAC encoding and decoding include (i) software as provided by JVT-050 H.264/AVC specification, (ii) the use of hardware to transcode CABAC format to another format which can be parsed at high speed, such as U.S. application Ser. No. 10/284,498, and (iii) the use of a specialty co-processor instructions to accelerate the inner loop of CABAC process as disclosed in “High Performance Arithmetic Coding VLSI Macro for the H.264 Video Compression Standard”, IEEE Transactions on Consumer Electronics, Vol. 51, No. 1, February, 2005.
Conventional approaches provide software to execute parsing and reconstruction on a macroblock basis. Due to the serial nature and bin:bit expansion of the arithmetic core process, the performance needed to implement a macroblock decode in a real-time manner needs a significant silion area and/or cost, if such approaches are feasible at all. Any non-standard format or proprietary implementation needs increased area (cost) as it is necessary to support both standard formats.
The use of speciallity co-processor instructions accelerates the software alternative as provided in the JVT-050 H.264/AVC specification. However, the fundamentally serial nature and bin:bit expansion still remains. Concentrating on the inner arithmetic core does not aid with the context selection which is still performed for every bin decoded.
It would be desirable to provide a method and/or apparatus for encoding and/or decoding a compressed video stream that uses an entropy encoded method in a manner that is well suited for low cost, low power, and/or real-time devices.